/* * Copyright (C) 2014 IUH �yber$oft Team * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package vn.cybersoft.obs.android.activities; import vn.cybersoft.obs.android.R; import vn.cybersoft.obs.android.preference.ModePreference; import vn.cybersoft.obs.android.preference.PowerPecentPreference; import vn.cybersoft.obs.android.provider.PowerSchedule; import vn.cybersoft.obs.android.utilities.Log; import vn.cybersoft.obs.android.utilities.ToastManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.Toast; /** * @author Luan Vu (hlvu.cybersoft@gmail.com) * */ public class SetPowerScheduleActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener { public static final String KEY_ENABLED = "power_shedule_enabled"; public static final String KEY_BATTERY_LEVEL = "power_schedule_level"; public static final String KEY_MODE = "power_schedule_mode"; private CheckBoxPreference mEnabledPref; private PowerPecentPreference mBatteryLevelPref; private ModePreference mModePref; private PowerSchedule mOriginalSchedule; private long mId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Override the default content view. setContentView(R.layout.set_schedule_layout); addPreferencesFromResource(R.xml.power_schedule_prefs); mEnabledPref = (CheckBoxPreference) findPreference(KEY_ENABLED); mBatteryLevelPref = (PowerPecentPreference) findPreference(KEY_BATTERY_LEVEL); mBatteryLevelPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary(getString(R.string.percentage, Integer.valueOf((String) newValue))); return true; } }); mModePref = (ModePreference) findPreference(KEY_MODE); mModePref.setOnPreferenceChangeListener(this); Intent i = getIntent(); mId = i.getLongExtra(PowerSchedule.EXTRA_ID, -1); if (Log.LOGV) { Log.v("In SetPowerScheduleActivity, id = " + mId); } PowerSchedule schedule = null; if (mId == -1) { // No schedule id means create a new schedule. schedule = new PowerSchedule(); setTitle(getString(R.string.app_name) + " > " + getString(R.string.add_new_power_schedule)); } else { /* load schedule details from database */ schedule = PowerSchedule.getSchedule(getContentResolver(), mId); setTitle(getString(R.string.app_name) + " > " + getString(R.string.edit_power_schedule)); // Bad schedule if (schedule == null) { finish(); return; } } mOriginalSchedule = schedule; updatePrefs(mOriginalSchedule); getListView().setItemsCanFocus(true); // Attach actions to each button. Button saveButton = (Button) findViewById(R.id.save); saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean isFillMode = mModePref.getModeId() != -1; boolean isFillBatLevel = !TextUtils.isEmpty(mBatteryLevelPref.getText()); if (isFillMode && isFillBatLevel) { saveSchedule(); finish(); } else { int msgResId = R.string.save_schedule_unknow_err; if (!isFillBatLevel) { msgResId = R.string.save_schedule_power_empty_err; } else if (!isFillMode) { msgResId = R.string.save_schedule_mode_empty_err; } createToast(SetPowerScheduleActivity.this, getString(msgResId)); } } }); Button cancelButton = (Button) findViewById(R.id.cancel); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void updatePrefs(PowerSchedule schedule) { mId = schedule.id; mEnabledPref.setChecked(schedule.enabled); if (mId != -1) { mBatteryLevelPref.setText(Integer.toString(schedule.level)); mBatteryLevelPref.setSummary(getString(R.string.percentage, schedule.level)); } mModePref.setModeId(schedule.modeId); } private void saveSchedule() { PowerSchedule schedule = new PowerSchedule(); schedule.id = mId; schedule.enabled = mEnabledPref.isChecked(); schedule.level = Integer.valueOf(mBatteryLevelPref.getText()); schedule.modeId = mModePref.getModeId(); Log.i("In SetPowerSchedule ModeId: " + schedule.modeId); if (schedule.id == -1) { PowerSchedule.addSchedule(getContentResolver(), schedule); mId = schedule.id; } else { PowerSchedule.updateSchedule(getContentResolver(), schedule); } } static void createToast(Context context, String message) { Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG); ToastManager.setToast(toast); toast.show(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int index = ((ListPreference) preference).findIndexOfValue(newValue.toString()); String entry = (String) ((ListPreference) preference).getEntries()[index]; ((ListPreference) preference).setSummary(entry); return true; } }